/*
 * BuscarVendedor.java
 *
 * Created on 02/06/2009, 08:59:48
 * Copyright Administrador
 */
package Soligee.view;

import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeAlterarImplements;
import Soligee.view.ApplicationBean1;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.icesoft.faces.component.selectinputtext.SelectInputText;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeRemoverImplements;
import Soligee.decorador.PaginacaoListaCincoEmCinco;
import Soligee.model.vo.cadastros.UsuarioVO;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.convert.DoubleConverter;
import javax.faces.convert.IntegerConverter;
import javax.faces.convert.LongConverter;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import Soligee.model.vo.cadastros.VendedorVO;
import javax.faces.context.FacesContext;

public class BuscarVendedor extends AbstractPageBean {
   // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

   private int __placeholder;
   //variavel estática para controler alteração e
   private static boolean controle;
   private VendedorVO vendedor;
   private static int controlaSaida = 0;
   private static PaginacaoListaCincoEmCinco paginacaoLista;

   public static PaginacaoListaCincoEmCinco getPaginacaoLista() {
      return paginacaoLista;
   }

   public static void setPaginacaoLista(PaginacaoListaCincoEmCinco paginacaoLista) {
      BuscarVendedor.paginacaoLista = paginacaoLista;
   }
   private DefaultSelectionItems item; //item do autocomplete
   private List<VendedorVO> listaDeVendedores; //lista para preencher a tabela

   public DefaultSelectionItems getItem() {
      return item;
   }

   public void setItem(DefaultSelectionItems item) {
      this.item = item;
   }

   public static boolean isControle() {
      return controle;
   }

   public static void setControle(boolean controle) {
      BuscarVendedor.controle = controle;
   }

   public VendedorVO getVendedor() {
      return vendedor;
   }

   public void setVendedor(VendedorVO vendedor) {
      this.vendedor = vendedor;
   }


   /**
    * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
    * This method is automatically generated, so any user-specified code inserted
    * here is subject to being replaced.</p>
    */
   private void _init() throws Exception {
   }
   private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

   public DefaultTableDataModel getDataTable1Model() {
      return dataTable1Model;
   }

   public void setDataTable1Model(DefaultTableDataModel dtdm) {
      this.dataTable1Model = dtdm;
   }
   private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

   public DefaultSelectedData getSelectOneMenu1Bean() {
      return selectOneMenu1Bean;
   }

   public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
      this.selectOneMenu1Bean = dsd;
   }
   private DefaultSelectionItems selectOneMenu1DefaultItems = new DefaultSelectionItems();

   public DefaultSelectionItems getSelectOneMenu1DefaultItems() {
      return selectOneMenu1DefaultItems;
   }

   public void setSelectOneMenu1DefaultItems(DefaultSelectionItems dsi) {
      this.selectOneMenu1DefaultItems = dsi;
   }
   private HtmlSelectOneMenu tipoBusca = new HtmlSelectOneMenu();

   public HtmlSelectOneMenu getTipoBusca() {
      return tipoBusca;
   }

   public void setTipoBusca(HtmlSelectOneMenu hsom) {
      this.tipoBusca = hsom;
   }
   private SelectInputText campoABuscar = new SelectInputText();

   public SelectInputText getCampoABuscar() {
      return campoABuscar;
   }

   public void setCampoABuscar(SelectInputText sit) {
      this.campoABuscar = sit;
   }
   private HtmlCommandButton btn_buscar = new HtmlCommandButton();

   public HtmlCommandButton getBtn_buscar() {
      return btn_buscar;
   }

   public void setBtn_buscar(HtmlCommandButton hcb) {
      this.btn_buscar = hcb;
   }
   private HtmlInputText campoNomeCompleto = new HtmlInputText();

   public HtmlInputText getCampoNomeCompleto() {
      return campoNomeCompleto;
   }

   public void setCampoNomeCompleto(HtmlInputText hit) {
      this.campoNomeCompleto = hit;
   }
   private HtmlInputText campoComissaoPrazo = new HtmlInputText();

   public HtmlInputText getCampoComissaoPrazo() {
      return campoComissaoPrazo;
   }

   public void setCampoComissaoPrazo(HtmlInputText hit) {
      this.campoComissaoPrazo = hit;
   }
   private HtmlInputText campoComissaoVista = new HtmlInputText();

   public HtmlInputText getCampoComissaoVista() {
      return campoComissaoVista;
   }

   public void setCampoComissaoVista(HtmlInputText hit) {
      this.campoComissaoVista = hit;
   }
   private HtmlDataTable tabelaResultadoBusca = new HtmlDataTable();

   public HtmlDataTable getTabelaResultadoBusca() {
      return tabelaResultadoBusca;
   }

   public void setTabelaResultadoBusca(HtmlDataTable hdt) {
      this.tabelaResultadoBusca = hdt;
   }
   private DefaultTableDataModel dataTable1Model1 = new DefaultTableDataModel();

   public DefaultTableDataModel getDataTable1Model1() {
      return dataTable1Model1;
   }

   public void setDataTable1Model1(DefaultTableDataModel dtdm) {
      this.dataTable1Model1 = dtdm;
   }
   private HtmlInputText campoCodigo = new HtmlInputText();

   public HtmlInputText getCampoCodigo() {
      return campoCodigo;
   }

   public void setCampoCodigo(HtmlInputText hit) {
      this.campoCodigo = hit;
   }
   private HtmlCommandButton tabelaResultadoBuscaFooterFirstButton = new HtmlCommandButton();

   public HtmlCommandButton getTabelaResultadoBuscaFooterFirstButton() {
      return tabelaResultadoBuscaFooterFirstButton;
   }

   public void setTabelaResultadoBuscaFooterFirstButton(HtmlCommandButton hcb) {
      this.tabelaResultadoBuscaFooterFirstButton = hcb;
   }
   private HtmlCommandButton tabelaResultadoBuscaFooterPreviousButton = new HtmlCommandButton();

   public HtmlCommandButton getTabelaResultadoBuscaFooterPreviousButton() {
      return tabelaResultadoBuscaFooterPreviousButton;
   }

   public void setTabelaResultadoBuscaFooterPreviousButton(HtmlCommandButton hcb) {
      this.tabelaResultadoBuscaFooterPreviousButton = hcb;
   }
   private HtmlCommandButton tabelaResultadoBuscaFooterNextButton = new HtmlCommandButton();

   public HtmlCommandButton getTabelaResultadoBuscaFooterNextButton() {
      return tabelaResultadoBuscaFooterNextButton;
   }

   public void setTabelaResultadoBuscaFooterNextButton(HtmlCommandButton hcb) {
      this.tabelaResultadoBuscaFooterNextButton = hcb;
   }
   private HtmlCommandButton tabelaResultadoBuscaFooterLastButton = new HtmlCommandButton();

   public HtmlCommandButton getTabelaResultadoBuscaFooterLastButton() {
      return tabelaResultadoBuscaFooterLastButton;
   }

   public void setTabelaResultadoBuscaFooterLastButton(HtmlCommandButton hcb) {
      this.tabelaResultadoBuscaFooterLastButton = hcb;
   }
   private HtmlCommandButton btnPopUp2 = new HtmlCommandButton();

   public HtmlCommandButton getBtnPopUp2() {
      return btnPopUp2;
   }

   public void setBtnPopUp2(HtmlCommandButton hcb) {
      this.btnPopUp2 = hcb;
   }
   private HtmlCommandButton btnPopUp1 = new HtmlCommandButton();

   public HtmlCommandButton getBtnPopUp1() {
      return btnPopUp1;
   }

   public void setBtnPopUp1(HtmlCommandButton hcb) {
      this.btnPopUp1 = hcb;
   }
   private HtmlCommandButton btnExcluir = new HtmlCommandButton();

   public HtmlCommandButton getBtnExcluir() {
      return btnExcluir;
   }

   public void setBtnExcluir(HtmlCommandButton hcb) {
      this.btnExcluir = hcb;
   }
   private HtmlOutputText texto_popUpExcluir = new HtmlOutputText();

   public HtmlOutputText getTexto_popUpExcluir() {
      return texto_popUpExcluir;
   }

   public void setTexto_popUpExcluir(HtmlOutputText hot) {
      this.texto_popUpExcluir = hot;
   }
   private PanelPopup panelPopup = new PanelPopup();

   public PanelPopup getPanelPopup() {
      return panelPopup;
   }

   public void setPanelPopup(PanelPopup pp) {
      this.panelPopup = pp;
   }
   private HtmlCommandLink linkAction1 = new HtmlCommandLink();

   public HtmlCommandLink getLinkAction1() {
      return linkAction1;
   }

   public void setLinkAction1(HtmlCommandLink hcl) {
      this.linkAction1 = hcl;
   }
   private HtmlCommandButton btnAlterar = new HtmlCommandButton();

   public HtmlCommandButton getBtnAlterar() {
      return btnAlterar;
   }

   public void setBtnAlterar(HtmlCommandButton hcb) {
      this.btnAlterar = hcb;
   }
   private HtmlCommandButton btnConfirmaAlteracao = new HtmlCommandButton();

   public HtmlCommandButton getBtnConfirmaAlteracao() {
      return btnConfirmaAlteracao;
   }

   public void setBtnConfirmaAlteracao(HtmlCommandButton hcb) {
      this.btnConfirmaAlteracao = hcb;
   }
   private HtmlOutputText textoPopUp = new HtmlOutputText();

   public HtmlOutputText getTextoPopUp() {
      return textoPopUp;
   }

   public void setTextoPopUp(HtmlOutputText hot) {
      this.textoPopUp = hot;
   }
   private DoubleConverter doubleConverter1 = new DoubleConverter();

   public DoubleConverter getDoubleConverter1() {
      return doubleConverter1;
   }

   public void setDoubleConverter1(DoubleConverter dc) {
      this.doubleConverter1 = dc;
   }
   private LongConverter longConverter1 = new LongConverter();

   public LongConverter getLongConverter1() {
      return longConverter1;
   }

   public void setLongConverter1(LongConverter lc) {
      this.longConverter1 = lc;
   }
   private IntegerConverter integerConverter1 = new IntegerConverter();

   public IntegerConverter getIntegerConverter1() {
      return integerConverter1;
   }

   public void setIntegerConverter1(IntegerConverter ic) {
      this.integerConverter1 = ic;
   }


   // </editor-fold>
   public BuscarVendedor() {
   }

   @Override
   public void init() {
      // Perform initializations inherited from our superclass

      // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
      // Initialize automatically managed components
      // *Note* - this logic should NOT be modified
      try {
         _init();
      } catch (Exception e) {
         log("BuscarVendedor Initialization Failure", e);
         throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
      }

      super.init();
      FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();

      limparCampos();
      setarCampos(true);
      inicializaCampos();
   // </editor-fold>

   }

   public void inicializaCampos() {
      campoNomeCompleto.setMaxlength(50);
      campoComissaoPrazo.setMaxlength(10);
      campoComissaoVista.setMaxlength(10);
      selectOneMenu1DefaultItems.clear();
      selectOneMenu1DefaultItems.add(new SelectItem(1, "Nome"));
      selectOneMenu1DefaultItems.add(new SelectItem(3, "Todos"));
      tipoBusca.setValue(1);
      panelPopup.setRendered(false);
      btnExcluir.setRendered(false);
      btnAlterar.setRendered(false);
      btnConfirmaAlteracao.setRendered(false);
      dataTable1Model.setWrappedData(null);
      this.controlaPaginacao(0);

   }

   public void setarCampos(boolean valor) {
      campoCodigo.setDisabled(valor);
      campoComissaoPrazo.setDisabled(valor);
      campoComissaoVista.setDisabled(valor);
      campoNomeCompleto.setDisabled(valor);
   }

   public void limparCampos() {
      campoCodigo.resetValue();
      campoComissaoPrazo.resetValue();
      campoComissaoVista.resetValue();
      campoNomeCompleto.resetValue();
   }

   @Override
   public void preprocess() {
   }

   @Override
   public void prerender() {
   }

   @Override
   public void destroy() {
   }

   protected RequestBean1 getview$RequestBean1() {
      return (RequestBean1) getBean("view$RequestBean1");
   }

   protected SessionBean1 getview$SessionBean1() {
      return (SessionBean1) getBean("view$SessionBean1");
   }

   protected ApplicationBean1 getApplicationBean1() {
      return (ApplicationBean1) getBean("ApplicationBean1");
   }

   public List<VendedorVO> getListaDeVendedores() {
      return listaDeVendedores;
   }

   public void setListaDeVendedores(List<VendedorVO> listaDeVendedores) {
      this.listaDeVendedores = listaDeVendedores;
   }

   protected ApplicationBean1 getview$ApplicationBean1() {
      return (ApplicationBean1) getBean("view$ApplicationBean1");
   }

   protected BuscarRepresentante getview$BuscarRepresentante() {
      return (BuscarRepresentante) getBean("view$BuscarRepresentante");
   }

   protected CadastrarPessoaJuridica getview$CadastrarPessoaJuridica() {
      return (CadastrarPessoaJuridica) getBean("view$CadastrarPessoaJuridica");
   }

   protected CadastrarVendedor getview$CadastrarVendedor() {
      return (CadastrarVendedor) getBean("view$CadastrarVendedor");
   }

   public String tabelaResultadoBusca_firstPageAction() {
      dataTable1Model.setWrappedData(this.getPaginacaoLista().firstPage());
      tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
      tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
      if (this.getPaginacaoLista().getTotalPaginas() > 1) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
      }
      return null;
   }

   public String tabelaResultadoBusca_previousPageAction() {
      dataTable1Model.setWrappedData(this.getPaginacaoLista().previousPage());
      if (this.getPaginacaoLista().getNumeroDaPagina() == 1) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
      }
      if (this.getPaginacaoLista().getTotalPaginas() > 1) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
      }
      if (this.getPaginacaoLista().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }

   public String tabelaResultadoBusca_nextPageAction() {
      dataTable1Model.setWrappedData(this.getPaginacaoLista().nextPage());
      tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
      if (this.getPaginacaoLista().getTotalPaginas() == this.getPaginacaoLista().getNumeroDaPagina()) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterLastButton.setDisabled(true);
      }
      if (this.getPaginacaoLista().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }

   public String tabelaResultadoBusca_lastPageAction() {
      dataTable1Model.setWrappedData(this.getPaginacaoLista().lastPage());
      if (this.getPaginacaoLista().getTotalPaginas() == this.getPaginacaoLista().getNumeroDaPagina()) {
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      if (this.getPaginacaoLista().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }

   public String btn_buscar_action() {
      tabelaResultadoBusca.setRendered(true);
      SessionFacadeBuscarImplements facade_busca = new SessionFacadeBuscarImplements();

      switch (Integer.parseInt(tipoBusca.getValue().toString())) {
         case 1://busca por nomeCliente
            this.setListaDeVendedores(facade_busca.buscaPorNome("%nome%", campoABuscar.getValue().toString(), VendedorVO.class));
            dataTable1Model.setWrappedData(this.getListaDeVendedores());
            break;
         case 3://busca todos
            this.setListaDeVendedores(facade_busca.buscarTodos("codVendedor", VendedorVO.class));
            dataTable1Model.setWrappedData(this.getListaDeVendedores());
            break;
         default:
            System.out.println("Erro na consulta");
            break;
      }//fim switch

      this.setPaginacaoLista(new PaginacaoListaCincoEmCinco(this.getListaDeVendedores()));
      this.controlaPaginacao(this.getListaDeVendedores().size());
      return null;
   }

   public String linkAction1_action() {
      this.vendedor = (VendedorVO) tabelaResultadoBusca.getRowData(); //pega o objeto da linha selecionada
      campoCodigo.setValue(vendedor.getCodVendedor());
      campoNomeCompleto.setValue(vendedor.getNome());
      campoComissaoVista.setValue(vendedor.getComissaoVendaVista());
      campoComissaoPrazo.setValue(vendedor.getComissaoVendaPrazo());
      btnConfirmaAlteracao.setRendered(false);
      btnExcluir.setRendered(true);
      btnAlterar.setRendered(true);
      return null;
   }

   public void controlaPopup(boolean renderedPopup, String textoPoup, boolean btn1Rendered, boolean btn2Rendered,
           String textobtn1, String textobtn2) {

      panelPopup.setRendered(renderedPopup);
      textoPopUp.setValue(textoPoup);
      btnPopUp1.setValue(textobtn1);
      btnPopUp1.setRendered(btn1Rendered);
      btnPopUp2.setRendered(btn2Rendered);
      btnPopUp2.setValue(textobtn2);
   }

   public String btnAlterar_action() {
      this.setarCampos(false);
      controle = true;
      btnExcluir.setRendered(false);
      btnExcluir.setDisabled(true);
      btnAlterar.setRendered(false);
      btnAlterar.setDisabled(true);
      btnConfirmaAlteracao.setRendered(true);
      return null;
   }

   public String btnExcluir_action() {
      controle = false;
      controlaSaida = 2;
      controlaPopup(true, "Deseja excluir o usuário selecionado?!", true, true, "Sim", "Não");

      return null;
   }

   public String btnPopUp2_action() {
      panelPopup.setRendered(false);
      setarCampos(true);
      limparCampos();
      dataTable1Model.setWrappedData(null);
      return null;
   }

   public String btnPopUp1_action() {
      if(controlaSaida==1){
         return "voltar";
      }
      if (controle) {
         SessionFacadeAlterarImplements facadeAlterar = new SessionFacadeAlterarImplements();
         try {
            if (facadeAlterar.alterarVendedor(Integer.parseInt(campoCodigo.getValue().toString()),
                    campoNomeCompleto.getValue().toString(),
                    Double.parseDouble(campoComissaoPrazo.getValue().toString()),
                    Double.parseDouble(campoComissaoVista.getValue().toString()))) {
               btnExcluir.setRendered(false);
               btnAlterar.setRendered(false);
               controlaPopup(true, "Vendedor alterado com sucesso!", false, true, "OK", "ok");
               panelPopup.setRendered(false);
            }
         } catch (Exception e) {
            System.out.println(e.getMessage());
            controlaPopup(true, "Erro:" + e.getMessage() + "caused by: " + e.getStackTrace(), false, true, "OK", "OK");
            System.err.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());
         }
      } else {
         SessionFacadeRemoverImplements remover = new SessionFacadeRemoverImplements();
         try {
            remover.removerVendedor(vendedor);
         btnExcluir.setRendered(false);
         btnAlterar.setRendered(false);
         controlaPopup(true, "Usuário excluido com sucesso!", false, true, "OK", "OK");
         
        } catch (Exception e) {
         controlaPopup(true, "Erro:" + e.getMessage() + "caused by: " + e.getStackTrace(), false, true, "", "OK");
         System.err.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());
         }
      }

      return null;
   }

   //metodo para controlar os botoes da paginacao
   public void controlaPaginacao(int controlePaginas) {
      if (controlePaginas <= 5) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterLastButton.setDisabled(true);
      }
      if (controlePaginas > 5) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
      }
   }


   //ProcessValueChange-TipoBusca
   public void tipoBusca_processValueChange(ValueChangeEvent vce) {
      if (Integer.parseInt(tipoBusca.getValue().toString()) == 1) {
         campoABuscar.setReadonly(false);
         campoABuscar.setValue("");
      } else if (Integer.parseInt(tipoBusca.getValue().toString()) == 3) {
         campoABuscar.setReadonly(true);
         campoABuscar.setValue("");
      }
   }

   //ProcessValueChange - CampoABuscar
   public void campoABuscar_processValueChange(ValueChangeEvent vce) {
      if (Integer.parseInt(tipoBusca.getValue().toString()) == 1) {
         item = new SessionFacadeBuscarImplements().consultaSelectInputText(7, "nome", campoABuscar.getValue().toString(), VendedorVO.class);
      }
   }

   //btnVoltarSuperior
   public String btn_voltar_action() {
      controlaPopup(true, "Deseja Sair ?", true, true, "Sim", "Não");
      return null;
   }

   public String btnConfirmaAlteracao_action() {
      controle = true;
      controlaPopup(true, "Deseja alterar o usuário selecionado?!", true, true, "Sim", "Não");
      return null;
   }
}
